#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 500010; // 定义数组大小，足够大的空间
bool s[N];            // 初始化布尔数组，记录每个位置的状态

int main() {
  int n, q;
  cin >> n >> q; // 读取总位置数  读取操作次数
  int cnt = 0;   // 计数器，记录当前满足条件的区域数量

  for (int i = 1; i <= q; i++) {
    int a;
    cin >> a;     // 读取当前操作的位置
    s[a] = !s[a]; // 切换该位置的状态
    // 根据切换后的状态和相邻位置的状态更新计数器
    if (s[a] == 1) {
      if (s[a + 1] == 1 && s[a - 1] == 1) {
        cnt--; // 如果两边都是1，切换后会连接两个区域，总数减少
      } else if (s[a + 1] == 0 && s[a - 1] == 0) {
        cnt++; // 如果两边都是0，切换后会创建一个新区域，总数增加
      }
    } else {
      if (s[a + 1] == 1 && s[a - 1] == 1) {
        cnt++; // 如果两边都是1，切换后会分割区域，总数增加
      } else if (s[a + 1] == 0 && s[a - 1] == 0) {
        cnt--; // 如果两边都是0，切换后会消除一个区域，总数减少
      }
    }

    // 可以考虑 异或运算 B站、
    /*

    */
    cout << cnt << endl; // 输出当前区域数量
  }
  return 0;
}